There are a plethora of different computer programming paradigms available today. Each paradigm has been optimized for use in its own particular problem space. However, the technological differences between models can present obstacles for user who wish to employ a plurality of different models in concert so as to leverage the benefits provided by each. For instance, object oriented programming employs of units of software called “objects” which encapsulate both data and functions. Object Oriented Programming (OOP) objects are software entities comprising data structures and operations on data. Together, these elements enable programmers to generate objects to model virtually any real-world entity in terms of its characteristics, represented by its data elements, and its behavior represented by its data manipulation functions.
The benefit of object technology arises out of three basic principles: encapsulation, polymorphism and inheritance. Objects hide or encapsulate the internal structure of their data and the algorithms by which their functions work. Instead of exposing these implementation details, objects present interfaces that represent their abstractions cleanly with no extraneous information. Polymorphism takes encapsulation one step further—the idea being many shapes, one interface. The third principle is inheritance, which allows developers to reuse pre-existing design and code. This capability allows developers to avoid creating software from scratch. Rather, through inheritance, developers derive subclasses that inherit behaviors, which the developer then customizes to meet particular needs.
The relational database model is a desirable choice of programmers for use in storing, retrieving and analyzing data. In contrast to the object oriented programming model, however, the fundamental units of operation for relational database management systems are tables. One of the significant benefits of relational databases is that they can store an extremely large quantity of data in part because data is not replicated. Furthermore, relational database are highly scalable and flexible. Additionally, relational database systems are advantageous in that they provide an easy way to analyze and retrieve large amounts of stored data. Relational database data can be analyzed utilizing structured query languages (SQL) to query data. Queries can be used to perform record retrieval and updates, perform calculations, append data to tables, or summarize data in one or more tables. Using queries, a user can specify the criteria for a search and then automatically sort and display all records matching the criteria.
Valuable software applications engage in data manipulation and processing. Accordingly, data needs to be stored somewhere to allow the data to survive the termination of the applications and/or computer shut down. This can be accomplished in a myriad of different ways such as storing data to text files, XML files or other data containers. Such storage can easily be accomplished by serializing objects and writing them to files. However, when applications deal with huge amounts of data there is a need to store data in databases such as a relational database to take advantage of the high performance query operations and consistency in data, among other things. Otherwise, an application would have to search through thousands of entries, in a file for instance, before retrieving desired information. Nevertheless, applications are most often written employing an object-oriented model while databases typically utilize the relational model. Hence, a mapping needs to be developed to provide translation from the object oriented model to the relational model and back from the relational model to the object oriented model. Conventionally, it is a developer's job to develop such a single map between the two worlds. Unfortunately, developing such a mapping component is a complex, time consuming, and error prone task.
Accordingly, there is a need in the art for a system and method to facilitate mapping between disparate domain models such as an object oriented programming model and a relational database model.